package org.example.controller;

import lombok.extern.slf4j.Slf4j;
import org.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

@Slf4j
@Controller
public class LoginController {

    @Autowired
    private UserService userService;

    // 访问登录页
    @GetMapping("/login")
    public String loginPage(Model model, @RequestParam(required = false) String error) {
        log.info("跳转登录页");
        if (error != null) {
            model.addAttribute("errorMessage", "用户名或密码错误");
        }
        return "login"; // 跳转到 login.html
    }

    // 处理登录请求
    @PostMapping("/doLogin")
    public String doLogin(
            @RequestParam String username,
            @RequestParam String password,
            HttpSession session
    ) {
        log.info("登录 用户名：{}，密码：{}", username, password);
        // 调用服务验证用户名密码
        if (userService.validateUser(username, password)) {
            // 验证通过，将用户信息存入会话
            session.setAttribute("loginUser", username);
            return "redirect:/home"; // 跳转到首页
        } else {
            // 验证失败，重定向回登录页并携带错误标识
            return "redirect:/login?error=1";
        }
    }

    // 首页（需要登录才能访问）
    @GetMapping("/home")
    public String homePage(HttpSession session, Model model) {
        log.info("进入首页");
        // 从会话中获取登录用户
        String username = (String) session.getAttribute("loginUser");
        if (username == null) {
            // 未登录，重定向到登录页
            return "redirect:/login";
        }
        // 传递用户名到页面
        model.addAttribute("username", username);
        return "home"; // 跳转到 home.html
    }

    // 退出登录
    @GetMapping("/logout")
    public String logout(HttpSession session) {
        log.info("登出");
        // 清除会话中的用户信息
        session.invalidate(); // 销毁会话
        return "redirect:/login";
    }
}
